/*
 * initdev.c
 * デバイス初期化
 */
#include <system.h>
#include <v93.h>
#include <libm.h>
#include <palette.h>
#include <intlib.h>
#include <agl.h>
#include <farl.h>
#include "vardecl.h"
#include "funcdecl.h"

/* 
========================================
  各種デバイス初期化
========================================
*/
void
UserInitDev()
{
  struct NT_PLO plo;

  /* 周辺初期化 */
  DevInit();
  init_70();
  /* カラーパレットの転送 */
  SetCmapI5c4();

  /* 諸々設定．普段は変更しないでください */
  AGLInit();
  ASLSetSpriteWindow(0, 0, 255, 255);
  FarlSetMemReg(FARL_MISC_STATUS_REG, 
    FARL_MISC_STATUS_SEL | FARL_MISC_STATUS_NTRM);
  
  FarlSetWindowClipReg(0, 0, 255, 255);
  FarlSetWindowScaleReg(128 * SCALE_PERS, 128, -128 * SCALE_PERS, 128);
  FarlSetPEICMaskReg(FARL_ICMASK_I5C4);
  FarlSetTEControlReg(FARL_TE_LTEN | FARL_TE_ICM | FARL_TE_SPEN 
                      | FARL_TE_BCE | FARL_TE_RJM);
  FarlValidateSwap();
  RasterInit();			/* ラスタ割り込み駆動ルーチン初期化 */
  PSGInit();			/* PSG ルーチン初期化 & ラスタ割り込みルーチンに登録 */
  
  /* パッド初期化 */
  init_get_pad();
  set_get_pad_mode(0, KC_IN, 1);
  set_get_pad_mode(1, KC_IN, 1);
  
  /* パッド入力ルーチンを割り込み駆動ルーチンに登録 */
  IrqSet(int_pad, XINT_KP);
  
  /* 画面の初期化 */
  KINGCls(KING_BG0);
  KINGCls(KING_BG1);
  set_nt_mode(line262 | inter_sync); /* Hu6261 画面モード設定 */
  if (KINGScreen(0) < 0)
    return;
  
  KINGCylinder(KING_BG0, 1);        /* 茶筒設定 */
  KINGChangeSize0(0x9898);        /* 画面サイズ設定 512x256 */
  RasterSet(RASTER_SCROLL1,&BackScroll1);
  RasterSet(RASTER_SCROLL2,&BackScroll2);
  dispon(bg | spr);
  IrqOn(XINT_KP);                /* KPort 割り込みを有効に */
  IrqOn(XINT_72);                /* HuC6272 割り込みを有効に */
  irq_enable();                        /* 割り込みを許可 */
}
